/**
 * Copyright (C), 2018-2020, 龙腾出行
 * FileName: UserDto
 * Author:   zhouw
 * Date:     2020/7/17 9:42
 * Description: 用户实体对象
 * History:
 * <author>          <time>          <version>          <desc>
 * zhouw           9:42                       描述
 */
package cn.com.dragonpass.pmodel.user;

import cn.com.dragonpass.pmodel.common.PageParameter;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 用户对象
 *
 * @author zhouw
 * @create 2020/7/17
 * @since 1.0.0
 */
public class UserDto {

    public static class UserListPage {

        @Data
        public static class Input extends PageParameter {

            /**
             * 员工信息
             */
            private String userInfo;

            /**
             * 员工账号
             */
            private String user;

            /**
             * 启用状态(1启用,0禁用)
             */
            private Long status;

            /**
             * 所属组织
             */
            private String groupId;

        }

        @Data
        public static class Output {

            /**
             * id
             */
            private Long id;

            /**
             * 用户名称
             */
            private String name;

            /**
             * 组织名称
             */
            private String groupName;

            /**
             * 登录帐号
             */
            private String user;

            /**
             * 手机号码
             */
            private String telephone;

            /**
             * 在职 1 在职，0 离职
             */
            private String inJob;

            /**
             * 启用状态(1启用,0禁用)
             */
            private Long status;

            /**
             * 启用状态(1启用,0禁用)
             */
            private String statusName;

            /**
             * 组织id
             */
            private String groupId;

        }

    }

    public static class UpdateStatus {

        @Data
        public static class Input {

            @NotNull(message = "id.is-empty")
            private String id;

            /**
             * 状态
             */
            @NotNull
            private Long status;

        }

        @Data
        public static class Output {

        }

    }

    public static class AddUser {

        @Data
        public static class Input {

            /**
             * 角色
             */
            private List<String> roles;

            /**
             * 登录帐号
             */
            private String user;

            /**
             * 登录密码
             */
            private String pwd;

            /**
             * 用户名称
             */
            private String name;

            /**
             * 用户级别(1管理员，2普通帐号)
             */
            private Long level;

            /**
             * 用户类型（1系统后台2票点系统3企业门户  5餐厅,6休息室,7礼宾车调度系统,8零售店,99.API对接）
             */
            private Long type;

            /**
             * 协议编号
             */
            private Long sellerid;

            /**
             * 手机号码
             */
            private String telephone;

            /**
             * 协议号
             */
            private String agreementno;

            /**
             * 所属企业(当FD_TYPE为2，3，4，5该字段代表对应的供应商/销售商ID）
             */
            private String company;

            /**
             * 所属部门
             */
            private String department;

            /**
             * 邮箱
             */
            private String email;

            /**
             * 描述
             */
            private String memo;

            /**
             * 启用状态(1启用,0禁用)
             */
            private Long status;


            /**
             * 更新时间
             */
            private Date updatetime;

            /**
             * 更新人
             */
            private Long updateuserid;

            /**
             * 用户级别（1是父账号，2是子账号）
             */
            private String usernode;

            /**
             * 用户缓存
             * */
            private String sessionid;

            /**
             * 最新登录时间
             */
            private Date loaddate;

            /**
             * 员工编号
             */
            private String employeecode;

            /**
             * 工号
             */
            private String workno;

            /**
             * 是否禁用支付（1为禁用,0为不禁用,票点中使用）
             */
            private Long disabledpay;

            /**
             * 推送设备号
             */
            private String appchannelid;

            /**
             * 手机设备号
             */
            private String appuserid;

            /**
             * 上次登录使用语种
             */
            private String uselg;

            /**
             * App用户ID
             */
            private Long appaccountid;

            /**
             * 0不强制更新，1强制更新
             */
            private Long forceupdate;

            /**
             * 用户微信id,绑定的微信
             */
            private String wechatid;

            /**
             * 性别
             */
            private String gender;

            /**
             * 在职 1 在职，0 离职
             */
            private String inJob;

            /**
             * 组织id
             */
            private String groupId;

        }

        @Data
        public static class Output extends Input{

        }

    }

    public static class GetUserOne {

        @Data
        public static class Input {

            @NotNull(message = "id.is-empty")
            private Long id;

        }

        @Data
        public static class Output extends AddUser.Input{

            /**
             * id
             */
            private Long id;

        }

    }

    public static class EditUser {

        @Data
        public static class Input extends AddUser.Input{

            @NotNull(message = "id.is-empty")
            private Long id;

        }

        @Data
        public static class Output extends Input{

        }

    }


   /* @Data
    public static class EditUser{

        private List<String> roles;

        *//**
         * 登录帐号
         *//*
        private String user;

        *//**
         * 登录密码
         *//*
        private String pwd;

        *//**
         * 用户名称
         *//*
        private String name;

        *//**
         * 用户级别(1管理员，2普通帐号)
         *//*
        private Long level;

        *//**
         * 用户类型（1系统后台2票点系统3企业门户  5餐厅,6休息室,7礼宾车调度系统,8零售店,99.API对接）
         *//*
        private Long type;

        *//**
         * 协议编号
         *//*
        private Long sellerid;

        *//**
         * 手机号码
         *//*
        private String telephone;

        *//**
         * 协议号
         *//*
        private String agreementno;

        *//**
         * 所属企业(当FD_TYPE为2，3，4，5该字段代表对应的供应商/销售商ID）
         *//*
        private String company;

        *//**
         * 所属部门
         *//*
        private String department;

        *//**
         * 邮箱
         *//*
        private String email;

        *//**
         * 描述
         *//*
        private String memo;

        *//**
         * 启用状态(1启用,0禁用)
         *//*
        private Long status;


        *//**
         * 更新时间
         *//*
        private Date updatetime;

        *//**
         * 更新人
         *//*
        private Long updateuserid;

        *//**
         * 用户级别（1是父账号，2是子账号）
         *//*
        private String usernode;

        *//**
         * 用户缓存
         * *//*
        private String sessionid;

        *//**
         * 最新登录时间
         *//*
        private Date loaddate;

        *//**
         * 员工编号
         *//*
        private String employeecode;

        *//**
         * 工号
         *//*
        private String workno;

        *//**
         * 是否禁用支付（1为禁用,0为不禁用,票点中使用）
         *//*
        private Long disabledpay;

        *//**
         * 推送设备号
         *//*
        private String appchannelid;

        *//**
         * 手机设备号
         *//*
        private String appuserid;

        *//**
         * 上次登录使用语种
         *//*
        private String uselg;

        *//**
         * App用户ID
         *//*
        private Long appaccountid;

        *//**
         * 0不强制更新，1强制更新
         *//*
        private Long forceupdate;

        *//**
         * 用户微信id,绑定的微信
         *//*
        private String wechatid;

    }
*/

    @Data
    public static class AddOut{
        private int rowCount;
    }

    @Data
    public static class QueryUser{

        /**
         * 账号ID
         * */
        private Long userId;
        /**
         * 账号名
         * */
        private String userName;
    }

    @Data
    public static class update{

        /**
         * 用户ID
         * */
        private Long id;
        /**
         * 登录帐号
         */
        private String user;

        /**
         * 登录密码
         */
        private String pwd;

        /**
         * 用户名称
         */
        private String name;

        /**
         * 用户级别(1管理员，2普通帐号)
         */
        private Long level;

        /**
         * 用户类型（1系统后台2票点系统3企业门户  5餐厅,6休息室,7礼宾车调度系统,8零售店,99.API对接）
         */
        private Long type;

        /**
         * 协议编号
         */
        private Long sellerid;

        /**
         * 手机号码
         */
        private String telephone;

        /**
         * 协议号
         */
        private String agreementno;

        /**
         * 所属企业(当FD_TYPE为2，3，4，5该字段代表对应的供应商/销售商ID）
         */
        private String company;

        /**
         * 所属部门
         */
        private String department;

        /**
         * 邮箱
         */
        private String email;

        /**
         * 描述
         */
        private String memo;

        /**
         * 启用状态(1启用,0禁用)
         */
        private Long status;


        /**
         * 更新时间
         */
        private Date updatetime;

        /**
         * 更新人
         */
        private Long updateuserid;

        /**
         * 用户级别（1是父账号，2是子账号）
         */
        private String usernode;


        /**
         * 最新登录时间
         */
        private Date loaddate;

        /**
         * 员工编号
         */
        private String employeecode;


        /**
         * 工号
         */
        private String workno;

        /**
         * 是否禁用支付（1为禁用,0为不禁用,票点中使用）
         */
        private Long disabledpay;

        /**
         * 推送设备号
         */
        private String appchannelid;

        /**
         * 手机设备号
         */
        private String appuserid;

        /**
         * 上次登录使用语种
         */
        private String uselg;

        /**
         * App用户ID
         */
        private Long appaccountid;

        /**
         * 0不强制更新，1强制更新
         */
        private Long forceupdate;

        /**
         * 用户微信id,绑定的微信
         */
        private String wechatid;

    }



    /**
     * 登陆对象
     * */
    @Data
    public static class UserLogin{
        /**
         * 账号
         * */
        @NotBlank(message = "userName.is-empty")
        private String userName;

        /**
         * 密码
         * */
        @NotBlank(message = "passWord.is-empty")
        private String passWord;

        /**
         * 系统编码
         */
        private String sysCode;
    }

    /**
     * 登陆返回对象
     * */
    @Data
    public static class UserVo{

        /**
         * 账号ID
         * */
        private Long userId;

        /**
         * 用户信息
         * */
        private EditUser.Input userInfo;

        /**
         * 账号所属角色信息
         * */
        private List<AccRoleDto.AddRole> roles;

        /**
         * 账号所属菜单权限信息
         * */
        private List<AccPermissionDto.AddInput> permissions;

        /**
         * 账号所属数据权限
         * */
        private List<AccDataPermission.RoleDataPermission> roleDataPermissions;

    }

//    /**
//     * 重置密码
//     */
//    public static class ResetPassword {
//
//        @Data
//        public static class Input {
//            /**
//             * 账号
//             */
//            @NotBlank(message = "账号不能为空")
//            private String user;
//            /**
//             * 密码
//             */
//            private String pwd;
//        }
//    }

}